VC最小化托盘问题```

来源:百度知道 编辑:UC知道 时间:2024/06/22 01:06:45
做了个程序,使程序最小化托盘了,但是要在双击,图标是显示程序界面,怎么做啊??
谢谢!!

vc中有时候要实现程序最小化,实际上那是的隐藏.那么如何实现那,下面我将给出我自己的粗浅建议.
程序最小化到托盘,是把程序隐藏,并在托盘上加上响应的图标,对图标操作发送消息来实现的.下面给出做法供大家参考:
首先在.h文件里加入自定义消息:
#define WM_SHOWTASK (WM_USER + 0x100) //一般数值大于100
//{{AFX_MSG(CMPARTDlg)
中间加入:
afx_msg LRESULT onShowTask(WPARAM wParam,LPARAM lParam);
//}}AFX_MSG
DECLARE_MESSAGE_MAP()

在.cpp文件里加入如下代码:
BEGIN_MESSAGE_MAP(CMPARTDlg, CDialog)
//{{AFX_MSG_MAP(CMPARTDlg)
中间加入消息声明:
ON_MESSAGE(WM_SHOWTASK,onShowTask)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()

要实现最小话到托盘的函数里加入:
void CMyDlg::OnMenuHpanel()
{
NOTIFYICONDATA nid;
nid.cbSize=(DWORD)sizeof(NOTIFYICONDATA);
nid.hWnd=this->m_hWnd;
nid.uID=IDR_MAINFRAME;
nid.uFlags=NIF_ICON|NIF_MESSAGE|NIF_TIP ;
nid.uCallbackMessage=WM_SHOWTASK; //自定义的消息名称
nid.hIcon=LoadIcon(AfxGetInstanceHandle(),MAKEINTRESOURCE(IDR_MAINFRAME));